﻿using System;
using System.Collections.Generic;
using SeguradoraIA.Framework.Data;
using SeguradoraIA.Framework.Log;
using SeguradoraIA.Data;
using SeguradoraIA.Data.TO;

namespace SeguradoraIA.Business
{
    public class Perfil
    {
		#region 'Propriedades'
        private static readonly IPerfilDAO dao = DAOFactory.CreateDAO<IPerfilDAO>();
		#endregion
		
		#region 'Metodos padrao'
		
        #region 'ObterTodos'
        /// <summary>Metodo encarregado de obter todos os registros.</summary>
        /// <returns>Lista da entidade</returns>
        /// <remarks>BSI</remarks>
        public IList<PerfilTO> ObterTodos()
        {
            var lista = dao.ObterTodos();

            LogManager.LogReturn(lista);
            
            return lista;
        }
		#endregion

        #region 'Obter'
        /// <summary>Metodo encarregado de obter um registro. Busca realizada pela chave primária da tabela.</summary>
        /// <returns>Entidade</returns>
        /// <remarks>BSI</remarks>
        public PerfilTO Obter(int idBairro, int idGrauInstrucao, int idIdade, int idMarcaCarro, int idPerfil, int idProfissao, int idSinistro, int idTempoHabilitacao, int idTipoCarro, int idTipoFormacao, int idValorCarro)
        {
            LogManager.LogEntryParameters(idBairro, idGrauInstrucao, idIdade, idMarcaCarro, idPerfil, idProfissao, idSinistro, idTempoHabilitacao, idTipoCarro, idTipoFormacao, idValorCarro);

            var to = dao.Obter(idBairro, idGrauInstrucao, idIdade, idMarcaCarro, idPerfil, idProfissao, idSinistro, idTempoHabilitacao, idTipoCarro, idTipoFormacao, idValorCarro);

            LogManager.LogReturn(to);

            return to;
        }
        #endregion

        #region 'Listar'
        /// <summary>Metodo encarregado de obter uma lista de registros. Busca realizada por um ou mais campos da entidade.</summary>
        /// <returns>Lista da entidade</returns>
        /// <remarks>BSI</remarks>
        public IList<PerfilTO> Listar(PerfilTO to)
        {
            LogManager.LogEntryParameters(to);

            var lista = dao.Listar(to);

            LogManager.LogReturn(lista);

            return lista;
        }
		#endregion

        #region 'Inserir'
        /// <summary>Metodo encarregado de inserir um registro.</summary>
        /// <returns>Entidade inserida.</returns>
        /// <remarks>BSI</remarks>
        public PerfilTO Inserir(PerfilTO to)
        {
            LogManager.LogEntryParameters(to);

            dao.Inserir(to);

            LogManager.LogReturn(to);

            return to;
        }
		#endregion

        #region 'Excluir'
        /// <summary>Metodo encarregado de excluir um registro.</summary>
        /// <remarks>BSI</remarks> 
        public void Excluir(int idBairro, int idGrauInstrucao, int idIdade, int idMarcaCarro, int idPerfil, int idProfissao, int idSinistro, int idTempoHabilitacao, int idTipoCarro, int idTipoFormacao, int idValorCarro)
        {
            LogManager.LogEntryParameters(idBairro, idGrauInstrucao, idIdade, idMarcaCarro, idPerfil, idProfissao, idSinistro, idTempoHabilitacao, idTipoCarro, idTipoFormacao, idValorCarro);

            dao.Excluir(idBairro, idGrauInstrucao, idIdade, idMarcaCarro, idPerfil, idProfissao, idSinistro, idTempoHabilitacao, idTipoCarro, idTipoFormacao, idValorCarro);
        }
		#endregion

        #region 'Atualizar'
        /// <summary>Metodo encarregado de atualizar um registro.</summary>
        /// <returns>Entidade atualizada.</returns>
        /// <remarks>BSI</remarks>
        public PerfilTO Atualizar(PerfilTO to)
        {
            LogManager.LogEntryParameters(to);

            dao.Atualizar(to);

            LogManager.LogReturn(to);

            return to;
        }
        #endregion
		
		#endregion       
    }
}

